# 创建时间：2025/5/2 星期五 14:42
# 创建人：李德才

class Person:
    def __init__(self, name, age):
        self.name = name
        """ 
        如果一个属性不希望被外部访问，可以定义为私有属性， 只能在类的内部访问， 不能在类的外部访问 
        使用双下划线开头的属性， 就是私有属性， 只能在类的内部访问， 不能在类的外部访问
        """
        self.__age = age

    """ 对于外部来说，不需要知道内部的实现，只需要知道如何使用即可"""

    def say(self):
        print(f"我叫{self.name}, 我今年{self.__age}岁了")


person = Person("张三", 18)
person.say()

print(person.name)

## print(person.__age) # 报错， 因为__age是私有属性， 不能在类的外部访问

print(dir(person))  # 可以查看属性 和方法， 可以看到__age属性， 但是不能直接访问 __age属性叫做 _Person__age，也就是 _类名_属性名

print(person._Person__age)  # 可以访问， 但是不推荐， 因为这是一种特殊的访问方式， 不建议使用
